//package com.learn.scrm;
//
//import com.alibaba.fastjson.JSON;
//import okhttp3.MultipartBody;
//import okhttp3.Request;
//import okhttp3.RequestBody;
//import okhttp3.Response;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//
//import java.io.File;
//import java.io.IOException;
//import java.util.List;
//import java.util.Map;
//
///**
// * @author : Yu.Tan
// * @date : 2023/6/5 15:25
// * @desc : **
// */
//public class OkHttpTemplate {
//
//    private static Logger logger = LoggerFactory.getLogger(OkHttpTemplate.class);
//
//
//    /**
//     * post文件上传
//     *
//     * @param url              接口地址
//     * @param headers          headers参数
//     * @param params           参数
//     * @param fileKey          服务端接口参数key
//     * @param files            文件集合
//     */
//    public String postFileUpload(String url, Map<String, String> headers, Map<String, String> params, String fileKey, List<File> files) {
//        String result = "";
//        try {
//            // form 表单形式上传
//            MultipartBody.Builder builder = new MultipartBody.Builder();
//            builder.setType(MultipartBody.FORM);
//
//            //添加参数
//            if (params != null) {
//                for (Map.Entry<String, String> entry : params.entrySet()) {
//                    builder.addFormDataPart(entry.getKey(), entry.getValue());
//                }
//            }
//            //添加文件，并约定key如“upload”作为后台接受的参数key
//            if (files != null) {
//                for (File file : files) {
//                    builder.addFormDataPart(fileKey, file.getName(), RequestBody.create(MEDIA_TYPE_MULTIPART_FORM, file));
//                }
//            }
//            RequestBody requestBody = builder.build();
//            Request.Builder requestBuilder = getRequestBuilder(headers);
//            requestBuilder.addHeader("Content-Type","multipart/form-data;");
//
//            Request request = requestBuilder.url(url).post(requestBody).build();
//            Response response = okHttpClient.newCall(request).execute();
//            if (response != null && response.isSuccessful()) {
//                result = response.body().string();
//            }
//        } catch (Exception e) {
//            logger.error("postFileUpload, url = " + url + " , params : " + JSON.toJSONString(params) , e);
//        }
//        return result;
//    }
//
//
//    /**
//     * post文件上传
//     *
//     * @param url              接口地址
//     * @param headers          headers参数
//     * @param params           参数
//     * @param fileKey          服务端接口参数key
//     * @param files            文件集合
//     * @param netCall          回调函数
//     */
//    public void postFileUploadAsync(String url, Map<String, String> headers, Map<String, String> params, String fileKey, List<File> files,final NetCall netCall) {
//        try {
//            MultipartBody.Builder builder = new MultipartBody.Builder();
//            builder.setType(MultipartBody.FORM);
//            //添加参数
//            if (params != null) {
//                for (Map.Entry<String, String> entry : params.entrySet()) {
//                    builder.addFormDataPart(entry.getKey(), entry.getValue());
//                }
//            }
//            //添加文件，并约定key如“upload”作为后台接受的参数key
//            if (files != null) {
//                for (File file : files) {
//                    builder.addFormDataPart(fileKey, file.getName(), RequestBody.create(MEDIA_TYPE_MULTIPART_FORM, file));
//                }
//            }
//            RequestBody requestBody = builder.build();
//            Request.Builder requestBuilder = getRequestBuilder(headers);
//            requestBuilder.addHeader("Content-Type","multipart/form-data;");
//
//            Request request = requestBuilder.url(url).post(requestBody).build();
//            Call call = okHttpClient.newCall(request);
//            //4 执行Call
//            call.enqueue(new Callback() {
//                @Override
//                public void onFailure(Call call, IOException e) {
//                    netCall.failed(call, e);
//                }
//
//                @Override
//                public void onResponse(Call call, Response response) throws IOException {
//                    netCall.success(call, response);
//                }
//            });
//        } catch (Exception e) {
//            logger.error("postFileUploadAsync, url = " + url + " , params : " + JSON.toJSONString(params) , e);
//        }
//    }
//}
